package com.itcam.list_.collection_.list_;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
 * Author:Cammy.Wu
 * Date:2024-06-02
 * Description:
 */

public class ListDemo03 {
    /**
     * 开发修改异常：ConcurrentModificationException
     * <p>
     * 场景：使用【迭代器】遍历集合的过程中，调用了【集合对象】的添加，删除方法，就会出现此异常
     * <p>
     * 解决方案：迭代器的遍历过程中，不允许使用集合对象的添加或删除，那就使用迭代器自己的添加或删除方法
     *      删除方法：普通的迭代器有
     *      添加方法：普通的迭代器没有，需要使用List集合特有的迭代器
     */
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        list.add("君不见黄河之水天上来，奔流到海不复回。");
        list.add("君不见高堂明镜悲白发，朝如青丝暮成雪。");
        list.add("人生得意须尽欢，莫使金樽空对月。");
        list.add("天生我材必有用，千金散尽还复来。");
        list.add("烹羊宰牛且为乐，会须一饮三百杯。");
        list.add("岑夫子，丹丘生，将进酒，杯莫停。");
        list.add("与君歌一曲，请君为我倾耳听。");
        list.add("钟鼓馔玉不足贵，但愿长醉不复醒。");
        list.add("古来圣贤皆寂寞，惟有饮者留其名。");
        list.add("陈王昔时宴平乐，斗酒十千恣欢谑。");
        list.add("主人何为言少钱，径须沽取对君酌。");
        list.add("五花马、千金裘，呼儿将出换美酒，与尔同销万古愁。");

        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String s = it.next();
            if ("人生得意须尽欢，莫使金樽空对月。".equals(s)) {
                it.remove();
            }
        }
        System.out.println("list = " + list);

        ListIterator<String> lit = list.listIterator();
        while (lit.hasNext()) {
            String s = lit.next();
            if ("君不见高堂明镜悲白发，朝如青丝暮成雪。".equals(s)) {
                lit.add("人生得意须尽欢，莫使金樽空对月。");
            }
        }
        System.out.println("list = " + list);
    }
}
